home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / SciAn / src / ScianEvents.h < prev    next >
C/C++ Source or Header  |  1994-08-01  |  5KB  |  178 lines

  1. /*ScianEvents.h
  2.   Eric Pepke
  3.   Stuff for events
  4. */
  5.  
  6. /*Must include ScianWindows.h*/
  7. #ifndef _H_WINDOWS
  8. #include "ScianWindows.h"
  9. #endif
  10.  
  11. #define CLICK2TIME (HEARTBEAT * 3 / 4)  /*Ticks between a double click */
  12. #define CLICK2DIST 5                    /*Pixels between a double click*/
  13. #define MAXMOVETIME (HEARTBEAT / 4)    /*Maximum moving time allowed*/
  14. #define MINROTTIME 0.20            /*Minimum rotation time*/
  15.  
  16. extern ObjPtr dropObject;        /*Object to drop in window*/
  17. extern ObjPtr dropSource;        /*Source for the dropping*/
  18. extern int dropX, dropY;        /*Global coordinates of dropX and y*/
  19. extern Bool interactiveMoving;        /*true iff moving interactively*/
  20. extern Bool contextHelp;        /*True iff context sensitive help*/
  21. extern int NTSCOn;            /*True iff NTSC is on*/
  22. extern long defaultMonitor;        /*Default monitor*/
  23. extern int settleEvents;        /*Some events to settle*/
  24. extern char *functionKeyNames[];    /*names of keys*/
  25.  
  26. typedef void (*TaskType)();
  27. extern int globalEventFlags;
  28.  
  29. void ToggleNTSC();
  30. void ToggleStereo();
  31.  
  32. #define MINCONSTRAINT    2        /*Number of pixels minimum for constraint*/
  33.  
  34. /*Function keys, integer values*/
  35. #define FK_UP_ARROW    256        /*Up arrow*/
  36. #define FK_DOWN_ARROW    257        /*Down arrow*/
  37. #define FK_LEFT_ARROW    258        /*Left arrow*/
  38. #define FK_RIGHT_ARROW    259        /*Right arrow*/
  39.  
  40. #define FK_BASE        512        /*The minimum value for function keys*/
  41. #define FK_N        256        /*Number of function keys*/
  42.  
  43. #define FK_1        513        /*Numbered function keys*/
  44. #define FK_2        514
  45. #define FK_3        515
  46. #define FK_4        516
  47. #define FK_5        517
  48. #define FK_6        518
  49. #define FK_7        519
  50. #define FK_8        520
  51. #define FK_9        521
  52. #define FK_10        522
  53. #define FK_11        523
  54. #define FK_12        524
  55. #define FK_PRINT_SCREEN    525        /*Print screen*/
  56.  
  57. #define MAX_KEYS    600        /*Maximum number of keycodes*/
  58.  
  59. /*Mouse buttons*/
  60. #define MB_LEFT        1        /*Left mouse button*/
  61. #define MB_MIDDLE    2        /*Middle mouse button*/
  62. #define MB_RIGHT    3        /*Right mouse button*/
  63.  
  64. /*Event types*/
  65. #define ET_SET_WINDOW        1    /*Set a new input window*/
  66. #define ET_UNSET_WINDOW        2    /*Unset an old window*/
  67. #define ET_KEY_DOWN        3    /*A key is down*/
  68. #define ET_MOUSE_DOWN        4    /*The mouse goes down*/
  69. #define ET_RESHAPE_WINDOW    5    /*A window is reshaped*/
  70. #define ET_DRAW_WINDOW        6    /*A window needs to be drawn*/
  71. #define ET_UNKNOWN        7    /*Unknown event*/
  72. #define ET_CLOSE_WINDOW        8    /*Close a window*/
  73. #define ET_MOUSE_UP        9    /*The mouse comes up*/
  74. #define ET_QUIT            10    /*Quit SciAn*/
  75. #define ET_DEPTHCHANGE_WINDOW    11    /*A window's depth has changed*/
  76. #define ET_ICONIFY_WINDOW    12    /*A window has been iconified*/
  77. #define ET_DEICONIFY_WINDOW    13    /*A window has been de-iconified*/
  78. #define ET_ROTATE_DIAL        14    /*Dial has been rotated*/
  79.  
  80. #define ISUSEREVENT(t)     ((t) == ET_MOUSE_DOWN || (t) == ET_KEY_DOWN)
  81.  
  82.  
  83. /*Event structure*/
  84. typedef struct
  85.     {
  86.     int type;            /*The type of the event*/
  87.     long flags;            /*The event flags*/
  88.     long time;            /*The time of the event*/
  89.     union
  90.     {
  91.         WinInfoPtr window;        /*Window set (or whatever)*/
  92.         int key;            /*Key pressed*/
  93.         struct {
  94.         int mouseButton;    /*Mouse button pressed*/
  95.         int x;            /*Initial x*/
  96.         int y;            /*Initial y*/
  97.         } mouse;
  98.         struct {
  99.         int whichDial;        /*Which dial moved*/
  100.         int delta;        /*How much moved*/
  101.         } dial;
  102.     } data;
  103.     } Event;
  104.  
  105. /*Maximum number of events*/
  106. #define MAXNEVENTS    300        /*Why not make it big?*/
  107.  
  108. /*Event flags*/
  109. #define F_SHIFTDOWN    1        /*Shift key is held down, keep 1*/
  110. #define F_OPTIONDOWN    2        /*Option key is down, keep 2*/
  111. #define F_DOUBLECLICK    4        /*Click is potentially a double click*/
  112. #define F_COMMANDDOWN    8        /*Command key is down*/
  113. #define T_PRESS        0x1000        /*Press tool*/
  114. #define T_ROTATE    0x2000        /*Rotate tool*/
  115. #define T_HELP        0x3000        /*Context sensitive help*/
  116. #define T_INQUIRY    0x4000        /*Inquiry tool*/
  117. #define TOOLBITS    0xF000        /*Bits for the tool*/
  118. #define TOOL(f)        ((f) & TOOLBITS)/*Macro to get tool*/
  119.  
  120. #define F_EXTEND    F_SHIFTDOWN    /*Extended click*/
  121. #define F_CONSTRAIN    F_SHIFTDOWN    /*Constrained click*/
  122.  
  123. #ifdef PROTO
  124. void QueueDevices(void);
  125. void UnqueueDevices(void);
  126. void MainLoop(void);
  127. void DoQuit(void);
  128. void MaybeQuit(void);
  129. Bool OneEvent(Bool);
  130. void SetNTSC(void);
  131. void Set60(void);
  132. void LongOperation(void);
  133. void DoTask(TaskType);
  134. void DoUniqueTask(TaskType);
  135. void SetContextSensitiveHelp(void);
  136. void InitEvents(void);
  137. void KillEvents(void);
  138. void DeferMessage(ObjPtr, NameTyp);
  139. void DeferUniqueMessage(ObjPtr, int);
  140. void FlushKeystrokes(void);
  141. Bool AltDown(void);
  142. Bool ShiftDown(void);
  143. Bool OptionDown(void);
  144. Bool Mouse(int *, int *);
  145. void NewEvents(void);
  146. Bool UserEvent(void);
  147. void PostEvent(Event *);
  148. void NeedToDrawFullQuality(ObjPtr);
  149. void DrawInteractive(Bool);
  150. #else
  151. void QueueDevices();
  152. void UnqueueDevices();
  153. void MainLoop();
  154. void DoQuit();
  155. void MaybeQuit();
  156. Bool OneEvent();
  157. void SetNTSC();
  158. void Set60();
  159. void LongOperation();
  160. void DoTask();
  161. void DoUniqueTask();
  162. void SetContextSensitiveHelp();
  163. void InitEvents();
  164. void KillEvents();
  165. void DeferMessage();
  166. void DeferUniqueMessage();
  167. void FlushKeystrokes();
  168. Bool AltDown();
  169. Bool ShiftDown();
  170. Bool OptionDown();
  171. Bool Mouse();
  172. void NewEvents();
  173. Bool UserEvent();
  174. void PostEvent();
  175. void NeedToDrawFullQuality();
  176. void DrawInteractive();
  177. #endif
  178.